package com.chinasofti.zbestadmin.web;

import com.chinasofti.zbestadmin.dao.model.Product;
import com.chinasofti.zbestadmin.service.IProductService;
import com.chinasofti.zbestadmin.web.form.ProductForm;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 商品 前端控制器
 * </p>
 *
 * @author zbestadmin
 * @since 2019-05-29
 */
@Controller
@Slf4j
public class ProductController extends BaseController {

    @Autowired
    private IProductService productService;

    @RequestMapping(value = "addProduct", method = RequestMethod.POST)
    public String addProduct(@RequestParam("avatar") MultipartFile avatar, ProductForm productForm) {
        log.info("进入addProduct");
        // 先设定一个放置上传文件的文件夹(该文件夹可以不存在，下面会判断创建)
        String deposeFilesDir = "d:\\zbestDataRepo\\";
        // 判断该文件是否有内容
        if (avatar.isEmpty()) { log.info("该文件无任何内容!!!"); }
        String fileName = avatar.getOriginalFilename();
        // 如果是获取的含有路径的文件名，那么截取掉多余的，只剩下文件名和后缀名
        int index = fileName.lastIndexOf("\\");
        if (index > 0) { fileName = fileName.substring(index + 1); }
        // 当文件有后缀名时
        if (fileName.indexOf(".") >= 0) {
            // split()中放正则表达式; 转义字符"\\."代表 "."
            String[] fileNameSplitArray = fileName.split("\\.");
            // 加上random戳,防止附件重名覆盖原文件
            fileName = fileNameSplitArray[0] + (int) (Math.random() * 100000) + "." + fileNameSplitArray[1];
        }
        // 当文件无后缀名时(如C盘下的hosts文件就没有后缀名)
        if (fileName.indexOf(".") < 0) {
            // 加上random戳,防止附件重名覆盖原文件
            fileName = fileName + (int) (Math.random() * 100000);
        }
        log.info("fileName:" + fileName);
        // 根据文件的全路径名字(含路径、后缀),new一个File对象dest
        File dest = new File(deposeFilesDir + fileName);

        // 如果pathAll路径不存在，则创建相关该路径涉及的文件夹;
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        try {
            // 将获取到的附件file,transferTo写入到指定的位置(即:创建dest时，指定的路径)
            avatar.transferTo(dest);
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        log.info("文件的全路径名字(含路径、后缀)>>>>>>>" + deposeFilesDir + fileName);

        productForm.setProductPicture("http://172.18.20.66:8888/" + fileName);

        productService.inserOneProduct(productForm);

        return "redirect:toGoodsList";
    }

    @RequestMapping(value = "toGoodsList")
    public String queryAllProduct(ModelMap modelMap){

        List<Product> productList = productService.queryAllProduct();

        modelMap.addAttribute("productList",productList);
        return "tgls/goodsManage/goods_list";
    }


}

